package com.qvtu.springboot.exception;

import com.qvtu.springboot.Common.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

//这个注解意味着GlobalExceptionHandler类的异常处理方法只会应用于com.qvtu.springboot.controller包以及子包中的控制类
@ControllerAdvice("com.qvtu.springboot.controller")
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class) //标记这个方法为异常处理器，Exception表示这个方法可以捕获所有类型的异常，因为Exception是所有异常的基类
//    作用：当应用程序中抛出任何类型的异常时，Spring会调用这个方法来处理异常
    @ResponseBody //用于指示方法的返回值应该被作为http响应体返回给客户端
//    作用：在处理异常时，@ResponseBody确保方法的返回值（在这个例子中是Result.error()）被序列化为json或xml（取决于配置的HttpMessageConverter）并返回被客户端）
    public Result error(Exception e){
        e.printStackTrace(); //用于打印异常的堆栈跟踪信息
        return Result.error();
    }
    @ExceptionHandler(CustomException.class)
    @ResponseBody
    public Result error(CustomException e){
        e.printStackTrace(); //用于打印异常的堆栈跟踪信息
        return Result.error(e.getCode(),e.getMsg());
    }

}
